内存去哪儿了

您所在的位置:网站首页 linux free 内存少 内存去哪儿了

内存去哪儿了

2023-04-14 12:22| 来源: 网络整理| 查看: 265

    相信很多公司都在使用云服务器,不知道大家有没有注意到,当你购买了一台云服务器以后,在操作系统里面通过 free 命令查看服务器的内存,容量总是会小于在云厂商控制台上面看到的内存容量。     为什么会这样呢,那就带着疑问往下看。

现象描述

购买了2台云服务,控制台上面显示的内存是4GiB(4096MiB)

登陆到操作系统里面查看内存大小,通过 free -m 命令发现机器的total内存比实际购买的要小。 10.0.1.229这台是CentOS6.5,系统内内存大小为3832MiB,少264MiB。

10.0.1.228这台是CentOS7.8,系统内内存大小为3789MiB,少307MiB。

问题分析

    看到这里,可能大家会猜想是不是服务器有问题,给我们少分配了一点内存,又或者不会太在意这一点点内存。下面将进行详细分析。     

1. kdump介绍

    在分析这个问题之前,先来了解下kdump。     kdump是Linux系统的一种高级故障处理机制,它可以在Linux系统内核崩溃时收集内存转储文件(crashdump),以便在分析转储文件时诊断问题。kdump可以帮助开发人员在内核崩溃时,更快地找到问题所在,以便更快地修复问题。

2. grub配置

    kdump需要预留部分内存供转储内核使用,所以需要配置grub文件。 CentOS6     配置/etc/grub.conf,在 kernel 后面添加如下:     kernel crashkernel=auto CentOS7     配置/etc/default/grub,GRUB_CMDLINE_LINUX 后面添加如下:     crashkernel=auto     其中crashkernel表示预留给转储的内存大小,auto表示系统自动分配,也可以直接写大小,比如预留128M写成crashkernel=128M

3. 问题原因

    此时再来看看自己的服务器配置

    发现是配置了内核转储,所以服务器预留了部分内存。     故 free -m 看到的内存大小会偏小。

    再看另外一台CentOS7.8的配置

    同样是配置了内核转储,所以 free -m 看到的内存大小也会偏小。

4. 关闭转储

    CentOS6.5 机器在 /etc/grub.conf 删除crashkernel=auto,或者设置crashkernel=0,然后重启机器。     此时内存为 3961MiB,多出了 129MiB。

    CentOS7.8机器在 /etc/default/grub 删除crashkernel=auto,或者设置crashkernel=0,执行 grub2-mkconfig -o /boot/grub2/grub.cfg,然后重启机器。     此时内存为 3950MiB,多出了 161MiB

    大家可能会说这时候的内存大小还是比控制台上面的 4096MiB小,这是因为操作系统本身会占用一定内存,但是free命令不会统计。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3